package org.dxy.domain.port.repository;

import org.dxy.domain.model.aggregate.MBOMAggRoot;

import java.util.List;

/**
 * MBOM仓储接口
 * @author dxy
 * @createTime 2025/9/10
 */
public interface IMBOMRepository {
    
    /**
     * 保存MBOM聚合根
     */
    Long save(MBOMAggRoot mbomAggRoot);
    
    /**
     * 根据ID查找MBOM聚合根
     */
    MBOMAggRoot findById(Long id);
    
    /**
     * 根据编码检查是否存在
     */
    boolean existsByCode(String mbomCode);
    
    /**
     * 根据产品ID查找有效的MBOM列表
     */
    List<MBOMAggRoot> findActiveByProductId(Long productId);
    
    /**
     * 根据状态查找MBOM列表
     */
    List<MBOMAggRoot> findByStatus(String status);
    
    /**
     * 删除MBOM
     */
    void deleteById(Long id);
    
    /**
     * 根据MBOM项ID查找MBOM聚合根
     */
    MBOMAggRoot findByMbomItemId(Long mbomItemId);
    
    /**
     * 根据替代料ID查找MBOM聚合根
     */
    MBOMAggRoot findBySubstituteId(Long substituteId);
}